package com.zzy.hashmap;

import java.util.HashMap;

/**
 * 290.wordPattern
 * 给定一种规律 pattern 和一个字符串 s ，判断 s 是否遵循相同的规律。
 * 这里的 遵循 指完全匹配，例如， pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。
 * 输入: pattern = "abba", s = "dog cat cat dog"
 * 输出: true
 */
public class L290WordPattern {
    public boolean wordPattern(String pattern, String s) {
        if (pattern.length() != s.trim().split(" ").length) {
            return false;
        }

        HashMap<Character, String> p2sMap = new HashMap<>();
        HashMap<String, Character> s2pMap = new HashMap<>();
        String[] strings = s.trim().split(" ");
        for (int i = 0; i < pattern.length(); i++) {
            if (p2sMap.get(pattern.charAt(i)) == null) {
                p2sMap.put(pattern.charAt(i), strings[i]);
            } else {
                if (!p2sMap.get(pattern.charAt(i)).equals(strings[i])) {
                    return false;
                }
            }

            if (s2pMap.get(strings[i]) == null) {
                s2pMap.put(strings[i], pattern.charAt(i));
            } else {
                if (!s2pMap.get(strings[i]).equals(pattern.charAt(i))) {
                    return false;
                }
            }
        }
        return true;
    }
}
